﻿using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Activation;

using ibba.src.norisk.BusinessLogic;
using ibba.src.norisk.Contracts;
using System.IO;
using System.IO.Compression;
using System.Text;
/*****************************************************************************************************************          
 Copyright © 2010 - Banco Itaú BBA S.A          
          
 GarantiaContrato 
            
 Histórico de Alterações:      
  26/10/2010 - Aline Abreu Alves (AAALVES)	- Criacao OS423540 

 *****************************************************************************************************************/

namespace ibba.src.norisk.ServiceImplementation
{

    [AspNetCompatibilityRequirements(RequirementsMode = System.ServiceModel.Activation.AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession,
                     ConcurrencyMode = ConcurrencyMode.Multiple)]

    class GarantiaContrato : IGarantiaContrato
    {

        private GarantiaContratoBL _garantiaContratoBL;

        public GarantiaContrato()
        {

            try
            {
                _garantiaContratoBL = new GarantiaContratoBL();
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

        }


        public List<ibba.src.norisk.Contracts.TipoParametroGarantia> ObterTipoParametroGarantia()
        {
            List<ibba.src.norisk.Contracts.TipoParametroGarantia> retorno = null;

            try
            {
                retorno = TranslateGarantiaContrato.TranslateTipoParametro(_garantiaContratoBL.ObterTipoParametroGarantia());
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }


        public List<ibba.src.norisk.Contracts.GarantiaContrato> ObterRelatorioGarantiaContrato(int pIdParametro)
        {
            List<ibba.src.norisk.Contracts.GarantiaContrato> retorno = null;

            try
            {
                retorno = TranslateGarantiaContrato.Translate(_garantiaContratoBL.ObterRelatorioGarantiaContrato(pIdParametro));
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }



        public List<ibba.src.norisk.Contracts.GarantiaContrato> ObterGarantiaContrato(string CodContrato)
        {
            List<ibba.src.norisk.Contracts.GarantiaContrato> retorno = null;

            try
            {

                retorno = TranslateGarantiaContrato.Translate(_garantiaContratoBL.ObterGarantiaContrato(CodContrato));
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }

        public int AtualizarGarantiaContrato(List<Contracts.GarantiaContrato> pListGarantiaContrato, string pCodUsuario, bool pIcPlanilha)
        {
            int retorno = 0;

            try
            {
                retorno = _garantiaContratoBL.AtualizarGarantiaContrato(TranslateGarantiaContrato.Translate(pListGarantiaContrato), pCodUsuario, pIcPlanilha);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }

        public int IncluirGarantiaContrato(List<Contracts.GarantiaContrato> pGarantiaContrato, string CodUsuario)
        {
            int retorno = 0;
            try
            {

                retorno = _garantiaContratoBL.IncluirGarantiaContrato(TranslateGarantiaContrato.Translate(pGarantiaContrato), CodUsuario);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);

        }

        //Inicio OS686793
        public List<ibba.src.norisk.Contracts.GarantiaPGR3> ObterGarantiaPGR3(string IcFormalizada, int IdGrupoGarantia, int IdGrupoOperacao, int IdGarantidor, int IdNatureza, int IdBem, int IdInstrumento, DateTime DtBase)
        {
            List<Contracts.GarantiaPGR3> retorno = null;

            try
            {
                retorno = TranslateGarantiaPGR3.Translate(_garantiaContratoBL.ObterGarantiaPGR3(IcFormalizada, IdGrupoGarantia, IdGrupoOperacao, IdGarantidor, IdNatureza, IdBem, IdInstrumento, DtBase));
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }

        public String ObterGarantiaPGR3Compactado(string IcFormalizada, int IdGrupoGarantia, int IdGrupoOperacao, int IdGarantidor, int IdNatureza, int IdBem, int IdInstrumento, DateTime DtBase)
        {
            List<Contracts.GarantiaPGR3> _dadosList = null;

            try
            {
                _dadosList = TranslateGarantiaPGR3.Translate(_garantiaContratoBL.ObterGarantiaPGR3(IcFormalizada, IdGrupoGarantia, IdGrupoOperacao, IdGarantidor, IdNatureza, IdBem, IdInstrumento, DtBase));
                String _dadosXML = new ibba.src.norisk.Utils.Serializator().Serialize(_dadosList);
                String _dadosGZip = new ibba.src.norisk.Utils.Compression().Compress(_dadosXML);

                return _dadosGZip;
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return null;
        }

        public List<ibba.src.norisk.Contracts.Garantidor> ObterGarantidor()
        {
            List<Contracts.Garantidor> retorno = null;

            try
            {
                retorno = TranslateGarantidor.Translate(_garantiaContratoBL.ObterGarantidor());
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }

        public List<ibba.src.norisk.Contracts.GrupoCliente> ObterGrupoCliente()
        {
            List<Contracts.GrupoCliente> retorno = null;

            try
            {
                retorno = TranslateGrupoCliente.Translate(_garantiaContratoBL.ObterGrupoCliente());
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }
        //Fim OS686793

        public List<ibba.src.norisk.Contracts.GarantiaContrato> ObterParametrizacaoGarantiaContratoLog(string CodContrato)
        {
            List<ibba.src.norisk.Contracts.GarantiaContrato> retorno = null;

            try
            {
                retorno = TranslateGarantiaContrato.Translate(_garantiaContratoBL.ObterParametrizacaoGarantiaContratoLog(CodContrato));
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }

        public string GerarRelatorioGarantiaPGR3(string IcFormalizada, int IdGrupoGarantia, int IdGrupoOperacao, int IdGarantidor, int IdNatureza, int IdBem, int IdInstrumento, DateTime DtBase)
        {
            string retorno = string.Empty;

            try
            {
                retorno = _garantiaContratoBL.GerarRelatorioGarantiaPGR3(IcFormalizada, IdGrupoGarantia, IdGrupoOperacao, IdGarantidor, IdNatureza, IdBem, IdInstrumento, DtBase);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return (retorno);
        }

    }
}
